{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "7508f29b",
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import numpy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "b1dfb2c1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[1., 2.],\n",
       "        [3., 4.],\n",
       "        [5., 6.]], dtype=torch.float64)"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = torch.tensor([[1, 2], [3, 4], [5, 6]], dtype=torch.float64)\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "a292801f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[1., 1., 1.],\n",
      "        [1., 1., 1.]])\n"
     ]
    }
   ],
   "source": [
    "a = torch.ones(2,3)\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "bd32a31f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[0., 0., 0.],\n",
      "        [0., 0., 0.]])\n"
     ]
    }
   ],
   "source": [
    "b = torch.zeros(2,3)\n",
    "print(b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "45ce55b0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[1., 0., 0.],\n",
      "        [0., 1., 0.],\n",
      "        [0., 0., 1.]])\n"
     ]
    }
   ],
   "source": [
    "c = torch.eye(3)\n",
    "print(c)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "0d3ac4bf",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[-1.8692,  0.9666, -1.9292],\n",
      "        [-1.1924,  0.4483,  0.6228]], dtype=torch.float64)\n"
     ]
    }
   ],
   "source": [
    "d = torch.randn(2,3, dtype = torch.float64)\n",
    "print(d)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "66af0088",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([4, 1, 3, 2, 0])\n"
     ]
    }
   ],
   "source": [
    "e = torch.randperm(5)\n",
    "print(e)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "bbd90405",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([1, 3, 5])\n"
     ]
    }
   ],
   "source": [
    "f = torch.arange(1,7,2)\n",
    "print(f)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "5a901e8d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[1, 2],\n",
       "        [3, 4],\n",
       "        [5, 6]], dtype=torch.int16)"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = torch.tensor([[1,2],[3,4],[5,6]],dtype=torch.int16)\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "81b079e8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[0., 0.],\n",
       "        [0., 0.],\n",
       "        [0., 0.]])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = torch.empty(3,2)\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "df842024",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[0.0387, 0.2939],\n",
       "        [0.5679, 0.7771],\n",
       "        [0.9722, 0.8579]])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = torch.rand(3,2)\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "97fe2395",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[0, 0],\n",
       "        [0, 0],\n",
       "        [0, 0]])"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = torch.zeros(3,2,dtype=torch.long)\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "1e33ba05",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([1.5000, 2.0000])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = torch.tensor([1.5, 2])\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "948f16e8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[0., 0.],\n",
      "        [0., 0.],\n",
      "        [0., 0.]])\n"
     ]
    }
   ],
   "source": [
    "c = torch.Tensor(3,2)\n",
    "e = torch.Tensor(c.size())\n",
    "print(e)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "1a0c15e6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[0., 0.],\n",
       "        [0., 0.],\n",
       "        [0., 0.]])"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "at = torch.empty(3,2)\n",
    "at"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "1c581372",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[0., 0., 0.],\n",
       "        [0., 0., 0.]])"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = torch.zeros(2,3)\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "032eaa33",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[0., 0., 0.],\n",
       "        [0., 0., 0.]])"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = torch.zeros_like(torch.Tensor(2,3))\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "184a0c70",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[1., 1., 1.],\n",
       "        [1., 1., 1.]])"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = torch.ones(2,3)\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "3e849e04",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[1., 1., 1.],\n",
       "        [1., 1., 1.]])"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = torch.ones_like(torch.Tensor(2,3))\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "04e809d4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[0.5973, 0.2946, 0.1026],\n",
       "        [0.0135, 0.4208, 0.4391]])"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a =  torch.rand(2,3)\n",
    "a"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "846c0d90",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[0., 1., 2., 3.],\n",
       "        [4., 5., 6., 7.]])"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = torch.Tensor([0,1,2,3,4,5,6,7])\n",
    "b = a.view(2,4)\n",
    "b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "2d929863",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([[ 6., 10.],\n",
       "        [ 7., 16.]])"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = torch.Tensor([[2,2],[1,4]])\n",
    "b = torch.Tensor([[3,5],[7,4]])\n",
    "c = a*b\n",
    "c"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "58b9ddeb",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([False, False])\n"
     ]
    }
   ],
   "source": [
    "a = torch.Tensor([1,2])\n",
    "b = torch.Tensor([3,4])\n",
    "print(a>b)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "5a050707",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor(5.)"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = torch.Tensor([2,8])\n",
    "b = torch.mean(a)\n",
    "b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "56033658",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor([-2.5929,  4.9868,  0.4722, -5.3378])"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a = torch.tensor([-1.2027, -1.7687, 0.4412, -1.3856]) \n",
    "b = torch.tan(a)\n",
    "b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "8435f169",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[0., 1.],\n",
      "        [2., 3.]])\n",
      "tensor([0, 1, 2, 3])\n"
     ]
    }
   ],
   "source": [
    "a = torch.arange(4.)\n",
    "print(torch.reshape(a,(2,2)))\n",
    "b = torch.tensor([[0,1],[2,3]])\n",
    "print(torch.reshape(b,(-1,)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "58db211f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[ 0.3216,  0.2588, -1.3557,  1.4020],\n",
      "        [-1.1704,  0.6152,  0.0815,  0.2183],\n",
      "        [ 0.3126,  0.1232, -2.2513,  1.0385]])\n",
      "tensor([[False, False, False,  True],\n",
      "        [False,  True, False, False],\n",
      "        [False, False, False,  True]])\n",
      "tensor([1.4020, 0.6152, 1.0385])\n"
     ]
    }
   ],
   "source": [
    "x = torch.randn(3,4)\n",
    "print(x)\n",
    "mask = x.ge(0.5)\n",
    "print(mask)\n",
    "print(torch.masked_select(x,mask))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "72aa0aaf",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[ 0.2946,  0.2732,  1.5111],\n",
      "        [ 0.4048,  1.7075, -1.4113]])\n",
      "tensor([[ 0.2946,  0.2732,  1.5111],\n",
      "        [ 0.4048,  1.7075, -1.4113],\n",
      "        [ 0.2946,  0.2732,  1.5111],\n",
      "        [ 0.4048,  1.7075, -1.4113],\n",
      "        [ 0.2946,  0.2732,  1.5111],\n",
      "        [ 0.4048,  1.7075, -1.4113]])\n"
     ]
    }
   ],
   "source": [
    "x  = torch.randn(2,3)\n",
    "print(x)\n",
    "print(torch.cat((x,x,x),0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "5d968024",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[1., 0., 0.],\n",
      "        [0., 1., 0.],\n",
      "        [0., 0., 1.]])\n"
     ]
    }
   ],
   "source": [
    "print(torch.eye(3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "2410c737",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([1, 2, 3])\n",
      "tensor([1.0000, 1.5000, 2.0000, 2.5000, 3.0000, 3.5000])\n"
     ]
    }
   ],
   "source": [
    "print(torch.arange(1,4))\n",
    "print(torch.arange(1,4,0.5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "518a0701",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[-0.2765, -0.6547,  1.3706, -1.1521],\n",
      "        [-1.5692, -0.4431, -0.7823, -0.7321],\n",
      "        [ 1.8394,  0.0852, -1.1754,  0.4130],\n",
      "        [-1.4860, -0.7181, -0.8516,  0.1941]])\n",
      "tensor([-0.2558, -0.7785, -0.7250,  0.8017])\n",
      "tensor([[ 1.0812,  0.8410, -1.8906, -1.4370],\n",
      "        [ 6.1355,  0.5692,  1.0790, -0.9132],\n",
      "        [-7.1919, -0.1094,  1.6214,  0.5151],\n",
      "        [ 5.8102,  0.9224,  1.1747,  0.2421]])\n"
     ]
    }
   ],
   "source": [
    "a = torch.randn(4,4)\n",
    "print(a)\n",
    "b = torch.randn(4)\n",
    "print(b)\n",
    "print(torch.div(a,b))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "efcc8f0b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([ 2.,  4.,  8., 16.])\n"
     ]
    }
   ],
   "source": [
    "exp = torch.arange(1.,5.)\n",
    "base = 2\n",
    "print(torch.pow(base,exp))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "1834a490",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([-0.8740, -0.6532, -0.7067,  0.2104])\n",
      "tensor([-1., -1., -1.,  0.])\n"
     ]
    }
   ],
   "source": [
    "a = torch.randn(4)\n",
    "print(a)\n",
    "print(torch.round(a))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "8edc7a2d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([ 0.4261, -0.7743, -1.0610,  0.0670])\n",
      "tensor([0.6049, 0.3155, 0.2571, 0.5167])\n"
     ]
    }
   ],
   "source": [
    "a = torch.randn(4)\n",
    "print(a)\n",
    "print(torch.sigmoid(a))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "3a2d7c46",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([ 0.7000, -1.2000,  0.0000,  2.0000,  3.0000])\n",
      "tensor([ 1., -1.,  0.,  1.,  1.])\n"
     ]
    }
   ],
   "source": [
    "a = torch.tensor([0.7,-1.2,0.,2,3])\n",
    "print(a)\n",
    "print(torch.sign(a))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "id": "6e17a447",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([-0.6753,  1.3160,  0.2636, -1.7950])\n",
      "tensor([   nan, 1.1472, 0.5134,    nan])\n"
     ]
    }
   ],
   "source": [
    "a = torch.randn(4)\n",
    "print(a)\n",
    "print(torch.sqrt(a))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "ef93f45a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[0.0270, 1.2938, 0.1285]])\n",
      "tensor(1.4493)\n"
     ]
    }
   ],
   "source": [
    "a = torch.randn(1,3)\n",
    "print(a)\n",
    "print(torch.sum(a))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "5be8d352",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([ 0.2888,  1.6872,  0.2044, -0.6261])\n",
      "tensor([ 0.1091, -0.2194, -0.6182,  1.5806])\n",
      "tensor([0.2888, 1.6872, 0.2044, 1.5806])\n"
     ]
    }
   ],
   "source": [
    "a = torch.randn(4)\n",
    "print(a)\n",
    "b = torch.randn(4)\n",
    "print(b)\n",
    "print(torch.max(a,b))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "00f9f1d4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "a =  tensor([[[[[0., 0.]],\n",
      "\n",
      "          [[0., 0.]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[0., 0.]],\n",
      "\n",
      "          [[0., 0.]]]]])\n",
      "a.size =  torch.Size([2, 1, 2, 1, 2])\n",
      "b=  tensor([[[0., 0.],\n",
      "         [0., 0.]],\n",
      "\n",
      "        [[0., 0.],\n",
      "         [0., 0.]]])\n",
      "b.size =  torch.Size([2, 2, 2])\n",
      "c=  tensor([[[[[0., 0.]],\n",
      "\n",
      "          [[0., 0.]]]],\n",
      "\n",
      "\n",
      "\n",
      "        [[[[0., 0.]],\n",
      "\n",
      "          [[0., 0.]]]]])\n",
      "c.size =  torch.Size([2, 1, 2, 1, 2])\n",
      "d=  tensor([[[[[[0., 0.]],\n",
      "\n",
      "           [[0., 0.]]]],\n",
      "\n",
      "\n",
      "\n",
      "         [[[[0., 0.]],\n",
      "\n",
      "           [[0., 0.]]]]]])\n",
      "d.size =  torch.Size([1, 2, 1, 2, 1, 2])\n"
     ]
    }
   ],
   "source": [
    "a = torch.zeros(2,1,2,1,2)\n",
    "print(\"a = \",a)\n",
    "print(\"a.size = \",a.size())\n",
    "b = torch.squeeze(a)\n",
    "print(\"b= \",b)\n",
    "print(\"b.size = \",b.size())\n",
    "c = torch.squeeze(a,0)\n",
    "print(\"c= \",c)\n",
    "print(\"c.size = \",c.size())\n",
    "d = torch.unsqueeze(a,0)\n",
    "print(\"d= \", d)\n",
    "print(\"d.size = \",d.size())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "884f7914",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "tensor([[0.0084, 0.0962]])\n",
      "tensor([[0.0354, 0.0542, 0.1234]])\n"
     ]
    },
    {
     "ename": "RuntimeError",
     "evalue": "The size of tensor a (2) must match the size of tensor b (3) at non-singleton dimension 1",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mRuntimeError\u001b[0m                              Traceback (most recent call last)",
      "Cell \u001b[1;32mIn[70], line 6\u001b[0m\n\u001b[0;32m      4\u001b[0m \u001b[38;5;28mprint\u001b[39m(torch\u001b[38;5;241m.\u001b[39mmul(a,b))\n\u001b[0;32m      5\u001b[0m \u001b[38;5;28mprint\u001b[39m(torch\u001b[38;5;241m.\u001b[39mmm(a,c))\n\u001b[1;32m----> 6\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[43mtorch\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmul\u001b[49m\u001b[43m(\u001b[49m\u001b[43ma\u001b[49m\u001b[43m,\u001b[49m\u001b[43mc\u001b[49m\u001b[43m)\u001b[49m)\n",
      "\u001b[1;31mRuntimeError\u001b[0m: The size of tensor a (2) must match the size of tensor b (3) at non-singleton dimension 1"
     ]
    }
   ],
   "source": [
    "a = torch.rand(1,2)\n",
    "b = torch.rand(1,2)\n",
    "c = torch.rand(2,3)\n",
    "print(torch.mul(a,b))\n",
    "print(torch.mm(a,c))\n",
    "print(torch.mul(a,c))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0bcacc95",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9c4640e1",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "pytorch",
   "language": "python",
   "name": "pytorch"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
